// 设计一个支持 push ，pop ，top 操作，并能在常数时间内检索到最小元素的栈。

// push(x) —— 将元素 x 推入栈中。
// pop() —— 删除栈顶的元素。
// top() —— 获取栈顶元素。
// getMin() —— 检索栈中的最小元素。

var MinStack = function() {
    this.arr = [];
    this.min = null;
};

/** 
 * @param {number} val
 * @return {void}
 */
MinStack.prototype.push = function(val) {
    this.arr.push(val);
    if (this.min == null || this.min > val) {
        this.min = val;
    }
};

/**
 * @return {void}
 */
// 利用pop进行缓冲
MinStack.prototype.pop = function() {
        let temp = this.arr.pop();
        if (temp == this.min) {
            let cur = this.arr[0];
            for (let i = 0; i < this.arr.length; i++) {
                if (this.arr[i] < cur) {
                    cur = this.arr[i];
                }
            }
            this.min = cur;
        }
        return temp;
    }
    /**
     * @return {number}
     */
MinStack.prototype.top = function() {
    return this.arr[this.arr.length - 1]
};

/**
 * @return {number}
 */
MinStack.prototype.getMin = function() {
    return this.min;
};